home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
PCGUIA 117
/
PC Guia 117.iso
/
Software
/
Utils
/
Software6
/
Product8
/
feedview-0.9.7-fx.xpi
/
chrome
/
feedview.jar
/
content
/
overlay.js
< prev
next >
Wrap
Text File
|
2005-03-22
|
6KB
|
186 lines
/*
0.9.2 fixes
[x] split words
[x] slider
[x] saving settings
[ ] fix bad mime types?
[x] menu bug
[x] date show hide
[ ] special chars fix
[x] refresh on interval
[/] image thumbnails
[x] external stylesheet
*/
function listObject(obj, s) {
var res = "List: " + obj + "\n";
for(var list in obj) {
if (list.indexOf(s) == -1)
res += list + ", ";
}
alert(res);
}
//var mime = Components.classes["@mozilla.org/mime;1"].getService(Components.interfaces.nsIMIMEService);
//listObject(mime);
var prefs = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefService);
prefs = prefs.getBranch("extensions.feedview.");
var processor = new XSLTProcessor();
var dataXSL = document.implementation.createDocument("", "", null);
dataXSL.addEventListener("load", onXslLoad, false);
dataXSL.load("chrome://feedview/content/rss.xml");
function onXslLoad(){processor.importStylesheet(dataXSL);}
function observeSettings(evnt)
{
try{
//alert("out");
if(!evnt.originalTarget.documentElement.hasAttribute("feedviewDocument"))return;
//alert("saving settings");
var doc = evnt.originalTarget;
var size = doc.getElementById("sizeslider").getAttribute("curpos");
var sw = doc.getElementById("switchdate").getAttribute("show");
prefs.setIntPref("articleSize", size);
prefs.setIntPref("showDate", sw);
//window.removeEventListener("unload", observeSettings, true);
}catch(ex){
//alert("ex: " + ex);
}
}
function load(evnt)
{
try{
/*
if(evnt.originalTarget instanceof HTMLDocument ){
var url = evnt.originalTarget.URL.toLowerCase();
if(url.indexOf(".rss") != -1 || url.indexOf(".rdf") != -1){
alert("nog xml rss file");
//var doc = new Array();
//doc.load(url);
//
listObject(evnt.originalTarget);
alert(evnt.originalTarget.textContent);
//listObject(evnt.originalTarget.ownerDocument);
var parser = new DOMParser();
evnt.originalTarget = parser.parseFromString("<rss></rss>", "text/xml");
//listObject(parser);
}
}
*/
if(evnt.originalTarget instanceof XMLDocument){
var dataXML = evnt.originalTarget;
if((dataXML.documentElement.getAttribute("xmlns") != null
&& (dataXML.documentElement.getAttribute("xmlns").toLowerCase() == "http://purl.org/rss/1.0/"
|| dataXML.documentElement.getAttribute("xmlns").toLowerCase() == "http://my.netscape.com/rdf/simple/0.9/"
|| dataXML.documentElement.getAttribute("xmlns").toLowerCase() == "http://purl.org/atom/ns#")
)
|| (dataXML.documentElement.nodeName != null && dataXML.documentElement.nodeName.toLowerCase() == "rss")) isFeed = true; else return;
// set for unload
evnt.originalTarget.documentElement.setAttribute("feedviewDocument", true);
var ownerDocument = document.implementation.createDocument("", "", null);
var strbundle=document.getElementById("feedViewString");
processor.setParameter(null, "feedUrl", evnt.originalTarget.documentURI);
processor.setParameter(null, "article_length", strbundle.getString("length")); // translation
processor.setParameter(null, "feedTitle", strbundle.getString("title") );
// Import all settings and set default values if they had bad values
// catch seperatly ...
try{ articleSize = prefs.getIntPref("articleSize"); } catch(ex) { articleSize = 50; }
processor.setParameter(null, "articleSize", articleSize);
try{ showDate = prefs.getIntPref("showDate"); } catch(ex) { showDate = 1; }
processor.setParameter(null, "showDate", showDate);
try{ showBar = prefs.getBoolPref("showBar"); } catch(ex) { showBar = true; }
processor.setParameter(null, "showBar", showBar);
try{ showImage = prefs.getBoolPref("showImage"); } catch(ex) { showImage = true; }
processor.setParameter(null, "showImage", showImage);
try{ timerInterval = prefs.getIntPref("timerInterval"); } catch(ex) { timerInterval = 0; }
processor.setParameter(null, "timerInterval", timerInterval);
try{ externalCSS = prefs.getCharPref("externalCSS"); } catch(ex) { externalCSS = ""; }
processor.setParameter(null, "externalCSS", externalCSS );
var len = dataXML.getElementsByTagName("item").length;
if(len == 0) len = dataXML.getElementsByTagName("entry").length;
processor.setParameter(null, "feedDescription", strbundle.getFormattedString("description", [len] ) );
var newFragment = processor.transformToFragment(dataXML, ownerDocument);
var oldLink = dataXML.documentElement.firstChild;
// it would be better if we could replace the documentElement.. now the rdf/rss/feed tag remains
dataXML.documentElement.replaceChild(newFragment, oldLink);
var oldLink = dataXML.documentElement.firstChild.nextSibling;
while(oldLink != null)
{
oldLinkX = oldLink.nextSibling;
if(oldLinkX != null)
dataXML.documentElement.removeChild(oldLink);
oldLink = oldLinkX;
}
}
}catch(ex){
//alert("Feedview error: \n" + ex);
}
}
window.addEventListener("load", load, true);
window.addEventListener("unload", observeSettings, true);